perm filename PRVLST[SS,SYS] blob
sn#430426 filedate 1979-04-05 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00006 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 A B C D E T TT TTT R S W X Y Z P DSK LST PRVBIT UFDN LHPRVS NLHPRV RHPRVS NRHPRV WANTPR
C00005 00003 GO LOOP
C00008 00004 MFDSOR MFDSO1 MFDSO2 MFDSO3 MFDSO4 MFDSO5 LADJ RADJ
C00010 00005 LIST PRIVLP PRIVL1 NOPRV1 PRNBIT PRNLB1 PRNBTR PRNRB1 OCTLH OCTRH OCTOUT OCTOU1 OUTSIX SIXPUT SIXPU1 PUTSTR PUTST1 PUT CPOPJ1 CPOPJ
C00013 00006 NODISK NOMFD NOCORE MFDERR EMMFD NOTUFD NOUFD NORDIN NOENT PUTERR NOWRIN MFDPTR LSTBUF RDINFO WRINFO INFO PDL
C00015 ENDMK
C⊗;
;A B C D E T TT TTT R S W X Y Z P DSK LST PRVBIT UFDN LHPRVS NLHPRV RHPRVS NRHPRV WANTPR
TITLE PRVLST Make PRIVS.LST, the list of what users have what privileges
A←1
B←2
C←3
D←4
E←5
T←6
TT←7
TTT←10
R←11
S←12
W←13
X←14
Y←15
Z←16
P←17
DSK←←1
LST←←2
;INFO WORDS
PRVBIT←←1
UFDN←←20 ;LENGTH OF A UFD ENTRY
DEFINE PRIVS <
;LEFT HALF
XLPRIV PRI,400000
XLPRIV DAW,200000 ;DISK ABSOLUTE WRITE
XLPRIV PRO,100000 ;FILE SYSTEM RENAME PRIV
XLPRIV REA,40000 ;FILE SYSTEM READ PRIV
XLPRIV WRT,20000 ;FILE SYSTEM WRITE PRIV
;;XLPRIV UDP,10000
XLPRIV AAO,10000 ;ACCESS ALIAS AS OWNER
XLPRIV UPG,4000 ;SELECT OTHER DPYS WITH UPGIOT
XLPRIV MES,2000 ;CAN DO TTYMES ARBITRARILY
XLPRIV KIL,1000
XLPRIV DEV,400 ;CAN USE DET/ATT DEVICE COMMAND
XLPRIV SEG,200
XLPRIV SSL,100 ;CAN SET SERVICE LEVEL RESERVATION TABLE
XLPRIV ACW,40 ;CAN DO ABS MODE WRITE USING SETPR2
XLPRIV INF,20 ;CAN READ AND WRITE SPECIAL FILE INFO
XLPRIV TLK,10
XLPRIV XGP,2 ;THIS IS THE XGP FONT COMPILER
XLPRIV LUP,1 ;LOCAL USER PRIVILEGE
;RIGHT HALF
XRPRIV ATT,400000 ;ALLOWS ATTACH TO PHANTOMS
XRPRIV LIV,200000 ;DEFEATS AUTOLOGOUT, LOOKED FOR BY SPY
XRPRIV CSP,40 ;COMPUTER SCIENCE PERSONNEL FILES GROUP
XRPRIV ACT,20 ;ACCOUNTING FILES GROUP
XRPRIV DEC,10 ;DEC PROPRIETARY SOFTWARE FILES GROUP
XRPRIV SCY,4 ;SECRETARY GROUP
XRPRIV SYS,2 ;SYSTEMS PROGRAMMERS GROUP
XRPRIV MAS,1 ;[1,YOURSELF] GROUP (MUST BE A RH PRIV FOR DSKSER)
>
DEFINE XLPRIV ! (NAME,BIT) <
NAME!PRV←←BIT
BIT,,'NAME'
>
DEFINE XRPRIV (NAME,BIT) <>
LHPRVS: PRIVS
NLHPRV←←.-LHPRVS
DEFINE XLPRIV (NAME,BIT) <>
DEFINE XRPRIV ! (NAME,BIT) <
NAME!PRV←←BIT
BIT,,'NAME'
>
RHPRVS: PRIVS
NRHPRV←←.-RHPRVS
WANTPR←←DAWPRV!REAPRV!ACWPRV!INFPRV ;PRIVILEGES THIS PROGRAM WANTS
EXTERNAL JOBFF,JOBREL
;GO LOOP
GO: RESET
MOVE P,[-100,,PDL-1]
MOVEI A,0
GETPRV A,
TLO A,WANTPR
SETPRV A,
TLC A,WANTPR
TLCE A,WANTPR
JRST [ OUTSTR [ASCIZ /You are not privileged to run this program. Please
see a wizard.
/]
EXIT ]
INIT DSK,17
'DSK '
0
JRST NODISK
INIT LST,0
'DSK '
LSTBUF,,
JRST NODISK
MOVE A,['PRIVS ']
MOVSI B,'LST'
SETZB C,D
ENTER LST,A
JRST NOENT
MOVE A,[' 1 1']
MOVSI B,'UFD'
MOVEI C,0
MOVE D,[' 1 1']
LOOKUP DSK,A
JRST NOMFD
HRR D,JOBFF
SUBI D,1
MOVEM D,MFDPTR
HLRE C,D
HRRZ B,JOBFF
SUB B,C
HRRZM B,JOBFF
CORE B,
JRST NOCORE
MOVEI E,0
INPUT DSK,D
STATZ DSK,740000
JRST MFDERR
CLOSE DSK,
PUSHJ P,MFDSOR
MOVE Z,MFDPTR
ADDI Z,1
LOOP: MOVE A,(Z)
MOVSI B,'UFD'
MOVEI C,0
MOVE D,[' 1 1']
LOOKUP DSK,A
JRST NOUFD
MTAPE DSK,RDINFO
JRST NORDIN
PUSHJ P,LIST
AOBJN Z,LOOP
EXIT
;MFDSOR MFDSO1 MFDSO2 MFDSO3 MFDSO4 MFDSO5 LADJ RADJ
MFDSOR: MOVE Z,MFDPTR
AOJGE Z,EMMFD
HRRZ X,Z
MFDSO1: SKIPN A,(Z)
JRST MFDSO2
HLRZ B,1(Z)
CAIE B,'UFD'
JRST [ PUSHJ P,NOTUFD
JRST MFDSO2 ]
HRRZ B,A ;PRG
PUSHJ P,LADJ ;LEFT ADJUST IT
HRLZM B,(X)
HLRZ B,A ;PRJ
PUSHJ P,LADJ
HRRM B,(X) ;STORE PRG,,PRJ (LEFT ADJUSTED)
ADDI X,1
MFDSO2: ADD Z,[UFDN,,UFDN]
JUMPL Z,MFDSO1
HRRZ A,X
CORE A,
JRST NOCORE
SUBI X,1
SUB X,MFDPTR
MOVN X,X
HRLM X,MFDPTR
MOVE Z,MFDPTR
ADDI Z,1
MFDSO3: MOVE A,(Z)
MOVE X,Z
MFDSO4: CAMLE A,(X)
EXCH A,(X)
AOBJN X,MFDSO4
MOVEM A,(Z)
AOBJN Z,MFDSO3
MOVE Z,MFDPTR
ADDI Z,1
MFDSO5: MOVE A,(Z)
HLRZ B,A
PUSHJ P,RADJ
HRRZM B,(Z)
HRRZ B,A
PUSHJ P,RADJ
HRLM B,(Z)
AOBJN Z,MFDSO5
POPJ P,
LADJ: SKIPE B
TRNE B,770000
POPJ P,
LSH B,6
JRST LADJ
RADJ: SKIPE B
TRNE B,77
POPJ P,
LSH B,-6
JRST RADJ
;LIST PRIVLP PRIVL1 NOPRV1 PRNBIT PRNLB1 PRNBTR PRNRB1 OCTLH OCTRH OCTOUT OCTOU1 OUTSIX SIXPUT SIXPU1 PUTSTR PUTST1 PUT CPOPJ1 CPOPJ
LIST: MOVE T,(Z) ;USER NAME
SKIPN INFO+PRVBIT
POPJ P, ;DON'T LIST UNLESS THERE ARE PRIVS
PUSHJ P,SIXPUT
MOVEI TT,11
PUSHJ P,PUT
MOVE A,INFO+PRVBIT ;GET PRIVILEGES
PRIVLP: JFFO A,PRIVL1
JRST NOPRV1
PRIVL1: MOVSI C,400000
MOVN B,B
LSH C,(B) ;GENERATE THE BIT
ANDCAM C,A ;TURN IT OFF IN A
PUSHJ P,PRNBIT
MOVEI TT,";"
SKIPE A
PUSHJ P,PUT
JRST PRIVLP
NOPRV1: MOVEI T,[ASCIZ /
/]
PUSHJ P,PUTSTR
POPJ P,
PRNBIT: HLLZ B,C
HRLZ C,C
JUMPE B,PRNBTR ;JUMP IF NOT A LH BIT
MOVSI C,-NLHPRV
PRNLB1: TDNN B,LHPRVS(C)
AOBJN C,PRNLB1
JUMPGE C,OCTLH
HRRZ T,LHPRVS(C)
JRST OUTSIX
PRNBTR: MOVSI B,-NRHPRV
PRNRB1: TDNN C,RHPRVS(B)
AOBJN B,PRNRB1
JUMPGE B,OCTRH
HRRZ T,RHPRVS(B)
JRST OUTSIX
OCTLH: HLRZ T,B
PUSHJ P,OCTOUT
MOVEI T,[ASCIZ /,,0/]
JRST PUTSTR
OCTRH: HLRZ T,C
OCTOUT: IDIVI T,10
JUMPE T,OCTOU1
HRLM TT,(P)
PUSHJ P,OCTOUT
HLRZ TT,(P)
OCTOU1: ADDI TT,"0"
JRST PUT
OUTSIX: JUMPE T,CPOPJ
MOVEI TT,0
ROTC T,6
JUMPE TT,OUTSIX
ADDI TT,40
PUSHJ P,PUT
JRST OUTSIX
SIXPUT: JUMPE T,CPOPJ
MOVEI TTT,6
SIXPU1: MOVEI TT,0
ROTC T,6
ADDI TT,40
PUSHJ P,PUT
SOJG TTT,SIXPU1
POPJ P,
PUTSTR: HRLI T,440700
PUTST1: ILDB TT,T
JUMPE TT,CPOPJ
PUSHJ P,PUT
JRST PUTST1
PUT: SOSG LSTBUF+2
OUT LST,
CAIA
JRST PUTERR
IDPB TT,LSTBUF+1
POPJ P,
CPOPJ1: AOS (P)
CPOPJ: POPJ P,
;NODISK NOMFD NOCORE MFDERR EMMFD NOTUFD NOUFD NORDIN NOENT PUTERR NOWRIN MFDPTR LSTBUF RDINFO WRINFO INFO PDL
NODISK: OUTSTR [ASCIZ /CAN'T INIT THE DISK
/]
EXIT
NOMFD: OUTSTR [ASCIZ /CAN'T LOOKUP THE MFD
/]
EXIT
NOCORE: OUTSTR [ASCIZ /NOT ENOUGH CORE
/]
EXIT
MFDERR: OUTSTR [ASCIZ /ERROR READING MFD
/]
EXIT
EMMFD: OUTSTR [ASCIZ /THE MFD IS EMPTY
/]
EXIT
NOTUFD: OUTSTR [ASCIZ /EXTENSION IN MFD IS NOT 'UFD'
/]
POPJ P,
NOUFD: OUTSTR [ASCIZ /CAN'T LOOKUP A UFD
/]
EXIT
NORDIN: OUTSTR [ASCIZ /MTAPE TO READ INFO FAILED
/]
EXIT
NOENT: OUTSTR [ASCIZ /CAN'T ENTER PRIVS.LST
/]
EXIT
PUTERR: OUTSTR [ASCIZ /ERROR IN OUTPUT TO LIST FILE
/]
EXIT
NOWRIN: OUTSTR [ASCIZ /MTAPE TO WRITE INFO FAILED
/]
EXIT
MFDPTR: 0
LSTBUF: BLOCK 3
RDINFO: 'GODMOD'
10
INFO
WRINFO: 'GODMOD'
11
INFO
INFO: BLOCK 4
PDL: BLOCK 100
END GO